package hxg.面试题.test.经典算法排序.选择排序;

/**
 * @author HeXiangGuang
 * @create 2023-01-05 16:11
 */
public class Demo {
    public static void algorithm4(){
        //定义一个整数类型数组，用于排序的原始数据
        int[] array={3,5,1,2,4};
        //获取数组的大小
        int length = array.length;
        //第一个循环用来遍历数组中的所有数字
        for (int i = 0; i < length; i++) {
            //初始化一个变量，用来记录最小数字的下标。初始默认假设第一个数字就是最小数字
            int minIndex = i;
            //第二个循环，通过比较获取数组中最小的数字的下标。
            for (int j = i+1; j < length ; j++) {
                //如果找到更小的数字，
                if (array[minIndex]>=array[j]) {
                    //将minIndex变量的值修改为新的最小数字的下标。
                    minIndex = j;
                }
            }

            //所有数字一个个比较结束之后，就能确认那个数字最小了。
            //将最小的数字替换到第一个位置，将第一个位置的数字放到最小数字原来的位置，就是一次交换。
            int temp=array[i];
            array[i]=array[minIndex];
            array[minIndex]=temp;
        }


        //将排序之后的数组打印出来。
        //下面的输出是不计算时间复杂度的，因为实际开发中这段输出代码会被删掉
        for (int i = 0; i < length; i++) {
            System.out.print(array[i]+"，");
        }

    }

    public static void main(String[] args) {
        algorithm4();
    }
}
